#include <REGX52.H>
#include "car.h"
#include "Timer0.h"
#include "Delay.h"
#include "Blueteech.h"
#include "oled.h"

sbit D1=P1^3;
sbit D2=P1^2;
sbit D3=P1^1;
sbit D4=P1^0;
extern char mode ;
extern unsigned char L_speed,R_speed;
extern unsigned char t;
void Track() 
{  
			while(mode==1)
	{
		
	

		
	if(D1==0&&D2==0&&D3==0&&D4==0)  //全白
		{
			car_go();		
		}
	if(D1==1&&D2==1&&D3==1&&D4==1) 	//全黑					
		{	                      
			car_go();
		}
	
	if(D1==0&&D2==1&&D3==0&&D4==0)  //右中黑
		{	
			car_sright();
			
	if(D1==0&&D2==0&&D3==0&&D4==0)  //（全白）go
			{
			car_go();		
			}
		}
		
	if(D1==0&&D2==0&&D3==1&&D4==0)  //左中黑
		{
			car_sleft();
			
	if(D1==0&&D2==0&&D3==0&&D4==0)  //（全白）go
			{
				car_go();		
			}
		}
		if(D1==1&&D2==0&&D3==0&&D4==0)  //最右黑  
		{	
			Delay(t);
			if(D1==1&&D2==0&&D3==0&&D4==0||D1==0&&D2==0&&D3==0&&D4==0){
			car_oright();
			R_speed=44;
			L_speed=44;
			
			while(D2==0){
			car_oright();
			}if(D2==1){
				car_sright();
			}
		}
			if(D1==1&&D2==1&&D3==0&&D4==0||D1==1&&D2==1&&D3==1&&D4==0)  //右直角
		{			
				car_go();
				Delay(3*t); //可能需要调整
			if(D1==0&&D2==0&&D3==0&&D4==0)
				{
					car_back();
					Delay(2*t);
					car_oright();
						R_speed=44;
						L_speed=44;
						while(D1==0){
						car_oright();
						}Delay(10);
						car_go();
				}		
			}	
		}
		if(D1==0&&D2==0&&D3==0&&D4==1)  //最左黑
		{	Delay(t);
			if(D1==0&&D2==0&&D3==0&&D4==1||D1==0&&D2==0&&D3==0&&D4==0){
			car_oleft();
			R_speed=44;
			L_speed=44;
			while(D3==0){
			car_oleft();
			}if(D3==1){
				car_sleft();
			}
		}
			if(D1==0&&D2==0&&D3==1&&D4==1||D1==0&&D2==1&&D3==1&&D4==1)  //左直角
		{
				car_go();
				Delay(3*t);
			if(D1==0&&D2==0&&D3==0&&D4==0)
				{
					car_back();
					Delay(2*t);
					car_oleft();
					R_speed=44;
					L_speed=44;
					while(D4==0){					
					car_oleft();
					}Delay(10);
					car_go();
			}	
		}
	}
	
	
		if(D1==1&&D2==1&&D3==0&&D4==0)  //右直角
		{			Delay(t);
			if(D1==1&&D2==1&&D3==0&&D4==0||D1==1&&D2==1&&D3==1&&D4==0){
				car_go();			
				Delay(3*t); //可能需要调整
			if(D1==0&&D2==0&&D3==0&&D4==0)
				{
					car_back();
					Delay(2*t);
					car_oright();
						R_speed=44;
						L_speed=44;
						while(D1==0){
						car_oright();
						}Delay(10);
						car_go();
//				if(D2==1){car_oleft();}
				}
			}
			
		}
		
		if(D1==1&&D2==1&&D3==1&&D4==0)  //右直角
		{			Delay(t);
			if(D1==1&&D2==1&&D3==1&&D4==0||D1==1&&D2==1&&D3==0&&D4==0){
				car_go();	
				Delay(3*t); //可能需要调整
			if(D1==0&&D2==0&&D3==0&&D4==0)
				{
					car_back();
					Delay(2*t);
					car_oright();
						R_speed=44;
						L_speed=44;
						while(D1==0){
						car_oright();
						}Delay(10);
						car_go();
				//if(D2==1){car_oleft();}
				}
			}
			
		}
				if(D1==0&&D2==0&&D3==1&&D4==1)  //左直角
		{
			Delay(t);   			//根据不同档位设置！可以现场调试！防止十字识别为直角
			if(D1==0&&D2==0&&D3==1&&D4==1||D1==0&&D2==1&&D3==1&&D4==1){
				car_go();
				Delay(3*t);
			if(D1==0&&D2==0&&D3==0&&D4==0)
				{
					car_back();
					Delay(2*t);
					car_oleft();
					R_speed=44;
					L_speed=44;
					while(D4==0){					
					car_oleft();
					}Delay(10);
					car_go();
//					if(D3==1){car_oright();}
				}
			}
				
		}
		
		if(D1==0&&D2==1&&D3==1&&D4==1)  //左直角
		{
			Delay(t);   			//根据不同档位设置！可以现场调试！防止十字识别为直角
			if(D1==0&&D2==1&&D3==1&&D4==1||D1==0&&D2==0&&D3==1&&D4==1){
				car_go();	
				Delay(3*t);
			if(D1==0&&D2==0&&D3==0&&D4==0)
				{
					car_back();
					Delay(2*t);
					car_oleft();
					R_speed=44;
					L_speed=44;
					while(D3==0){					
					car_oleft();
					}Delay(10);
					car_go();
//					if(D2==1){car_oright();}
				}
			}
				
		}
		if(D1==1&&D2==1&&D3==0&&D4==1){car_go();}
		if(D1==1&&D2==0&&D3==1&&D4==1){car_go();}
		if(mode==0){car_stop();}
	}

}
